/**
 * Created by li hong 2017/10/25 0025.
 */
var controllerDATA = null;
$(function () {
    $.ajaxSettings.async = false; //设置ajax请求为同步请求，默认是异步加载（在页面请求的时候，首先设置。不然数据可能会丢失）

    var table = new tableFactory();
    addListeners(table);


    /*layer,open日期事件*/
    $(document).on('click', function() {
        layui.use('laydate', function(){
            var laydate = layui.laydate;
            laydate.render({
                elem: '#new-fixtime', //新增的日期
                type: 'datetime'
            });
            laydate.render({
                elem: '#edit-fixtime', //新增的日期
                type: 'datetime'
            });

        }) ;
    });
});


Date.prototype.Format = function (fmt) { //author: meizz
    var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours(), //小时
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}

function tableFactory() {
    var me = this;
    me.data = null;
    me.controllerData = null;
    var init = function () {
        $.when(me.getControalData()).then(function () {
        $("#sfMGU").bootstrapTable({
            method: 'get',					  //请求方式（*）
            striped: true,					  //是否显示行间隔色
            cache: false,					   //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            pagination: true,				   //是否显示分页（*）
            sortable: true,					 //是否启用排序
            sortOrder: "asc",				   //排序方式
            sidePagination: "client",		   //分页方式：client客户端分页，server服务端分页（*）
            pageNumber: 1,					   //初始化加载第一页，默认第一页
            search: true,					   //是否显示表格搜索，只能进行客户端搜索
            strictSearch: false,                //true为全匹配，false为模糊查询
            showColumns: true,				  //是否显示筛选列按钮
            showRefresh: true,			  //是否显示刷新按钮
           clickToSelect:true,				//是否启用点击选中行
            showToggle: false,					//是否显示详细视图和列表视图的切换按钮
            cardView: false,					//是否显示详细视图
            detailView: false,				   //是否显示父子表
            singleSelect: false,                //是否支持多选,false表示支持多选，true表示不支持
            //undefinedText: '_',              //当数据为undefined时显示的字符
            height: 'auto',
            pageSize: 10,
            pageList: [5,10,20],
            columns: [{
                field: 'check',
                checkbox: true
            }, {
                title:'发电单元编号',
                field: 'mguno',
                align: 'center',
                valign: 'middle'
            },  {
                title: '所属控制器', field: '', align: 'center', valign: 'middle',
                formatter: function (value, row, index) {
                    return me.getControalById(row.controllerid);
                }
            },  {
                title: '电池类型',
                field: 'batterytype',
                align: 'center',
                valign: 'middle',
                formatter: function (value, row, index) {
                   if(value==0){
                        return "多晶";
                   }else{
                       return "单晶";
                   }
                }
                },{
                title: '安装倾角(°)',
                field: 'fixobliquity',
                align: 'center',
                valign: 'middle'
            }, {
                title: 'PV阵列转换效率',
                field: 'pvctransreffic',
                align: 'center',
                valign: 'middle',
                formatter:function (value, row, index) {
                    return value*100+"%";
                }
            }, {
                title: '逆变器效率',
                field: 'invertereffic',
                align: 'center',
                valign: 'middle',
                formatter:function (value, row, index) {
                    return value*100+"%";
                }
            }/*,  {
                title: '经度',
                field: 'lon',
                align: 'center',
                valign: 'middle'
            }, {
                title: '纬度',
                field: 'lat',
                align: 'center',
                valign: 'middle'
            }*/, {
                title: '光伏组件数量(块)',
                field: 'solarpanel',
                align: 'center',
                valign: 'middle'
                },
                {
                    title: '发电单元类型',
                    field: 'elecpowertype',
                    align: 'center',
                    valign: 'middle',
                    formatter: function (value, row, index) {
                        if(value==1){
                            return "固定";
                        }else if(value==2){
                            return "单跟踪";
                        }else if(value==3){
                            return "双跟踪";
                        }else if(value==4){
                            return "聚光面板";
                        }
                    }
                },
                {
                    title: '交流回路系数',
                    field: 'accircurtratio',
                    align: 'center',
                    valign: 'middle'
                },
                {
                    title: '安装方位角(°)',
                    field: 'directionangle',
                    align: 'center',
                    valign: 'middle'
                },
                {
                    title: '地面反射率',
                    field: 'earthalbedo',
                    align: 'center',
                    valign: 'middle'
                },{
                    title: '聚光倍率',
                    field: 'condensingrate',
                    align: 'center',
                    valign: 'middle'
                },{
                    title: '工作温度(°C)',
                    field: 'worktemp',
                    align: 'center',
                    valign: 'middle'
                },{
                    title: '光伏面板面积',
                    field: 'pannelarea',
                    align: 'center',
                    valign: 'middle'
                },{
                    title: '温度系数',
                    field: 'tempratio',
                    align: 'center',
                    valign: 'middle'
                },{
                    title: '老化系数',
                    field: 'ageingratio',
                    align: 'center',
                    valign: 'middle'
                },{
                    title: '失配系数',
                    field: 'unmatchratio',
                    align: 'center',
                    valign: 'middle'
                },{
                    title: '灰尘系数',
                    field: 'dustratio',
                    align: 'center',
                    valign: 'middle'
                },{
                    title: '直流回路系数',
                    field: 'dccratio',
                    align: 'center',
                    valign: 'middle'
                },{
                    title: '海拔高度(m)',
                    field: 'alt',
                    align: 'center',
                    valign: 'middle'
                },{
                    title: '环境监测仪辐射观测方式',
                    field: 'observmode',
                    align: 'center',
                    valign: 'middle'
                },{
                    title: '安装时间',
                    field: 'fixtime',
                    align: 'center',
                    valign: 'middle',
                    formatter:function (value, row, index) {
                        return new Date(parseInt(value)).Format("yyyy-MM-dd hh:mm");
                    }
                },{
                    title: '说明',
                    field: 'remark',
                    align: 'center',
                    valign: 'middle'
                }]
        });
            me.loadData();
        });
    }
    init();
}

tableFactory.prototype = {

    loadData: function () {
        var me = this;
        $.getJSON('../sfMGUManage/selectAll', '', function (_data) {
            me.data = _data;
            $("#sfMGU").bootstrapTable("load", _data);

        })
    },

    //加载控制器信息
    getControalData:function () {
        var me = this;
        $.getJSON('../sfControllerManage/selectAll', '', function (_data) {
            me.controlData = _data;
            controllerDATA = _data;//定义一个全局变量，方便修改的时候调用。
        })
    },
    //获取控制器ID
    getControalById: function (controllerid) {
        console.log(controllerid);
        var controllername = '';
        $.each(controllerDATA, function (index, item) {
            if (item.controllerid == controllerid) {
                controllername = item.controllername;
                return false;
            }
        });
        return controllername;
    },


    save: function () {
        var me = this;
        var html = [];
        html.push('<div style="margin: 10px;"><table >');
        html.push('<tr><td>发电单元编号：</td><td><input type="text" class="form-control" id="new-mguno" />' +
            '</td>');
        html.push('<td>所属控制器：</td><td><select type="text" class="form-control" id="new-controllerid">');
        $.each(controllerDATA, function (index, item) {
                html.push('<option value="' + item.controllerid + '">' + item.controllername + '</option>');
        });
        html.push('</select></td></tr>');


        html.push('<tr><td>交流回路系数：</td><td><input type="text" class="form-control" value="1" id="new-accircurtratio" />' +
            '</td>');

        html.push('<td>发电单元类型：</td><td><select type="text" class="form-control" id="new-ELECPOWERTYPE">');
            html.push('<option value="1">固定</option>');
            html.push('<option value="2">单跟踪</option>');
            html.push('<option value="3">双跟踪</option>');
            html.push('<option value="3">聚光面板</option>');
        html.push('</select></td></tr>');


        html.push('<tr><td>安装方位角：</td><td><input type="text" class="form-control"  value="0"  id="new-directionangle" />' +
            '</td>');
        html.push('<td>电池类型：</td><td><select type="text" class="form-control" id="new-batterytype">');
        html.push('<option value="0">多晶</option>');
        html.push('<option value="1">单晶</option>');
        html.push('</select></td></tr>');





        html.push('<tr><td>安装倾角(°)：</td><td><input type="text" class="form-control" id="new-fixobliquity" /></td>' +
            '<td>地面反射率：</td><td><input type="text" class="form-control" id="new-earthalbedo"  value="0.2"/></td></tr>');
        html.push('<tr><td>pv阵列转换效率：</td><td><input type="text" class="form-control" id="new-pvctransreffic"/></td>' +
            '<td>聚光倍率：</td><td><input type="text" class="form-control" id="new-condensingrate"  value="1"/></td></tr>');
        html.push('<tr><td>逆变器效率：</td><td><input type="text" class="form-control" id="new-invertereffic" /></td>' +
            '<td>工作温度(℃)：</td><td><input type="text" class="form-control" id="new-worktemp" value="25" /></td></tr>');
        /*html.push("<tr><td>安装时间：</td><td><input type='text' class='form-control' id='new-fixtime'/></td></tr>");*/
        html.push('<tr><!--<td>经度：</td><td><input type="text" class="form-control" id="new-lon" /></td>--><td>温度系数(℃)：</td><td><input type="text" class="form-control" id="new-tempratio" value="0.003" /></td>' +
            '<td>光伏面板面积：</td><td><input type="text" class="form-control" id="new-pannelarea" value=""/></td></tr>');
       /* html.push('<tr><!--<td>纬度：</td><td><input type="text" class="form-control" id="new-lat" /></td>-->' +
            '<td>温度系数(℃)：</td><td><input type="text" class="form-control" id="new-tempratio" value="0.003" /></td></tr>');*/
        html.push('<tr><td>光伏组件数量(块)：</td><td><input type="text" class="form-control" id="new-solarpanel" /></td>' +
            '<td>老化系数：</td><td><input type="text" class="form-control" id="new-ageingratio" value="0.01"/></td></tr>');

        html.push('<tr><td>失配系数：</td><td><input type="text" class="form-control" id="new-unmatchratio"  value="0.99"/></td>' +
            '<td>灰尘系数：</td><td><input type="text" class="form-control" id="new-dustratio"value="0.99" /></td></tr>');
        html.push('<tr><td>直流回路系数：</td><td><input type="text" class="form-control" id="new-dccratio" value="0.99"/></td>' +
            '<td>海拔高度(m)：</td><td><input type="text" class="form-control" id="new-alt"  value="1"/></td></tr>');
        html.push('<tr><td>安装时间：</td><td><input type="text" class="form-control" id="new-fixtime" /></td>' +
            '<td>说明：</td><td><input type="text" class="form-control" id="new-remark" /></td></tr>');

        html.push('</table></div>');

        layer.open({
            type: 1,
            area: '700px',
            title: '添加信息',
            btn: ['确定'],
            //shadeClose: true,//开启遮罩关闭
            content: html.join(''),
            yes: function (index) {
                var p = {
                    mguno : $("#new-mguno").val(),
                    controllerid : $("#new-controllerid").val(),
                     elecpowertype:$("#new-ELECPOWERTYPE").val(),
                    batterytype: $("#new-batterytype").val(),
                    fixobliquity: $("#new-fixobliquity").val(),
                    pvctransreffic: $("#new-pvctransreffic").val()/100,
                    invertereffic: $("#new-invertereffic").val()/100,
                    fixtime: new Date($("#new-fixtime").val().replace(/-/g,"/")),
                    //lon: $("#new-lon").val(),
                    //lat: $("#new-lat").val(),
                    solarpanel: $("#new-solarpanel").val(),

                    accircurtratio: $("#new-accircurtratio").val(),
                    directionangle: $("#new-directionangle").val(),
                    earthalbedo: $("#new-earthalbedo").val(),
                    condensingrate: $("#new-condensingrate").val(),
                    worktemp: $("#new-worktemp").val(),
                    pannelarea: $("#new-pannelarea").val(),
                    tempratio: $("#new-tempratio").val(),
                    ageingratio: $("#new-ageingratio").val(),
                    unmatchratio: $("#new-unmatchratio").val(),
                    dustratio: $("#new-dustratio").val(),
                    dccratio: $("#new-dccratio").val(),
                    alt: $("#new-alt").val(),
                    remark: $("#new-remark").val(),
                };
                layer.close(index);
                console.log(p);
                $.ajax({
                    url : "../sfMGUManage/insert",
                    type : "post",
                    contentType : "application/json",
                    dataType : "json",
                    data : JSON.stringify(p),//转换成字符串。后台使用了RequestBody注解
                    success : function(data) {
                        if (data === true) {
                            me.loadData();
                            layer.msg("添加成功！", {icon: 1});
                        } else {
                            layer.msg("添加失败！", {icon: 2});
                        }
                    },
                    error :function(){
                        layer.msg("添加失败！", {icon: 2});
                    }
                });
            }
        });
    },
    delete: function () {
        var me = this;
        var selects = $('#sfMGU').bootstrapTable("getSelections");
        if (selects.length > 0) {
            layer.confirm('确定删除?', {icon: 3, title:'提示'}, function (index) {
                var deletes = [];
                var id;
                $.each(selects, function (index, item) {
                    deletes.push({
                        mguid: item.mguid,
                    });
                    //id = item.id;
                });
                $.ajax({
                    url: '../sfMGUManage/delete',
                    type: 'post',
                    contentType : 'application/json;charset=utf-8', //设置请求头信息
                    dataType: 'json',
                    data: /*{"id":id},*/JSON.stringify(deletes),
                    success: function (data) {
                        if (data > 0) {
                            me.loadData();
                            layer.msg("已删除"+data+"条数据！", {icon: 1});
                        }
                    }
                });
                layer.close(index);
            });
        } else {
            layer.msg("请选择要删除的信息！", {icon: 1});
        }
    },

    edit: function () {
        var me = this;
        var selects = $('#sfMGU').bootstrapTable("getSelections");
        var len = selects.length;
        if (len === 1) {
            var editItem = selects[0];
            var html = [];
            html.push('<div style="margin: 10px;"><table >');
            html.push('<tr><td>控制器编号：</td><td><input type="text" class="form-control" id="edit-mguno" />' +
                '</td>');

            html.push('<td>所属控制器：</td><td><select type="text" class="form-control" id="edit-controllerid">');
            $.each(controllerDATA, function (index, item) {
                if (item.controllerid == editItem.controllerid) {
                    html.push('<option value="' + item.controllerid + '"selected>' + item.controllername + '</option>');
                } else {
                    html.push('<option value="' + item.controllerid + '">' + item.controllername + '</option>');
                }
            });

          /*  html.push('</select></td>' );
            html.push('<td>发电单元类型：</td><td><select type="text" class="form-control" id="edit-elecpowertype">') ;
            $.each(type, function (index, item) {
                if(item == editItem.elecpowertype){
                    html.push('<option value="' + item + '" selected>' + item + '</option>');
                }else {
                    html.push('<option value="' + item + '">' + item + '</option>');
                }
            });*/
            html.push('</tr>');

            html.push('<tr><td>交流回路系数：</td><td><input type="text" class="form-control" id="edit-accircurtratio" />' +
                '</td>');

            html.push('<td>发电单元类型：</td><td><select type="text" class="form-control" id="edit-elecpowertype">');
            html.push('<option value="1">固定</option>');
            html.push('<option value="2">单跟踪</option>');
            html.push('<option value="3">双跟踪</option>');
            html.push('<option value="3">聚光面板</option>');
            html.push('</select></td></tr>');


            html.push('<tr><td>安装方位角：</td><td><input type="text" class="form-control" id="edit-directionangle" />' +
                '</td>');
            html.push('<td>电池类型：</td><td><select type="text" class="form-control" id="edit-batterytype">');
            html.push('<option value="0">多晶</option>');
            html.push('<option value="1">单晶</option>');
            html.push('</select></td></tr>');


            html.push('<tr><td>安装倾角：</td><td><input type="text" class="form-control" id="edit-fixobliquity" /></td>' +
                '<td>地面反射率：</td><td><input type="text" class="form-control" id="edit-earthalbedo" /></td></tr>');
            html.push('<tr><td>pv阵列转换效率：</td><td><input type="text" class="form-control" id="edit-pvctransreffic" /></td>' +
                '<td>聚光倍率：</td><td><input type="text" class="form-control" id="edit-condensingrate" /></td></tr>');
            html.push('<tr><td>逆变器效率：</td><td><input type="text" class="form-control" id="edit-invertereffic" /></td>' +
                '<td>工作温度：</td><td><input type="text" class="form-control" id="edit-worktemp" /></td></tr>');
            html.push('<tr><!--<td>经度：</td><td><input type="text" class="form-control" id="edit-lon" /></td>-->' +
                '<td>光伏面板面积：</td><td><input type="text" class="form-control" id="edit-pannelarea" /></td><td>温度系数：</td><td><input type="text" class="form-control" id="edit-tempratio" /></td></tr>');
           /* html.push('<tr><td>纬度：</td><td><input type="text" class="form-control" id="edit-lat" /></td>' +
                '<td>温度系数：</td><td><input type="text" class="form-control" id="edit-tempratio" /></td></tr>');*/
            html.push('<tr><td>光伏组件数量(块)：</td><td><input type="text" class="form-control" id="edit-solarpanel" /></td>' +
                '<td>老化系数：</td><td><input type="text" class="form-control" id="edit-ageingratio" /></td></tr>');

            html.push('<tr><td>失配系数：</td><td><input type="text" class="form-control" id="edit-unmatchratio" /></td>' +
                '<td>灰尘系数：</td><td><input type="text" class="form-control" id="edit-dustratio" /></td></tr>');
            html.push('<tr><td>DCC系数：</td><td><input type="text" class="form-control" id="edit-dccratio" /></td>' +
                '<td>高程：</td><td><input type="text" class="form-control" id="edit-alt" /></td></tr>');
            html.push('<tr><td>安装时间：</td><td><input type="text" class="form-control" id="edit-fixtime" /></td>' +
                '<td>说明：</td><td><input type="text" class="form-control" id="edit-remark" /></td></tr>');



            html.push('</table></div>');
            layer.open({
                type: 1, area: '700px', title: '修改发电单元信息', btn: ['确定'],
                content: html.join(''),
                success: function () {
                    $('#edit-mguno').val(editItem.mguno);
                    $('#edit-controllerid').val(editItem.controllerid);
                    $('#edit-elecpowertype').val(editItem.elecpowertype);
                    $('#edit-batterytype').val(editItem.batterytype);
                    $('#edit-fixobliquity').val(editItem.fixobliquity);
                    $('#edit-pvctransreffic').val(editItem.pvctransreffic);
                    $('#edit-invertereffic').val(editItem.invertereffic);
                    //$('#edit-lon').val(editItem.lon);
                   // $('#edit-lat').val(editItem.lat);
                    $('#edit-solarpanel').val(editItem.solarpanel);
                    $('#edit-accircurtratio').val(editItem.accircurtratio);
                    $('#edit-directionangle').val(editItem.directionangle);
                    $('#edit-earthalbedo').val(editItem.earthalbedo);
                    $('#edit-condensingrate').val(editItem.condensingrate);
                    $('#edit-worktemp').val(editItem.worktemp);
                    $('#edit-pannelarea').val(editItem.pannelarea);
                    $('#edit-tempratio').val(editItem.tempratio);
                    $('#edit-ageingratio').val(editItem.ageingratio);
                    $('#edit-unmatchratio').val(editItem.unmatchratio);
                    $('#edit-dustratio').val(editItem.dustratio);
                    $('#edit-dccratio').val(editItem.dccratio);
                    $('#edit-alt').val(editItem.alt);
                    $('#edit-fixtime').val( new Date(parseInt(editItem.fixtime )).Format("yyyy-MM-dd hh:mm"));
                    $('#edit-remark').val(editItem.remark);

                },
                yes: function (index) {
                    var p = {
                        mguid:editItem.mguid,
                        mguno: $("#edit-mguno").val(),
                        controllerid: $("#edit-controllerid").val(),
                        elecpowertype: $("#edit-elecpowertype").val(),
                        batterytype: $("#edit-batterytype").val(),
                        fixobliquity: $("#edit-fixobliquity").val(),
                        pvctransreffic: $("#edit-pvctransreffic").val(),
                        invertereffic: $("#edit-invertereffic").val(),
                        //lon: $("#edit-lon").val(),
                        //lat: $("#edit-lat").val(),
                        solarpanel: $("#edit-solarpanel").val(),

                        accircurtratio: $("#edit-accircurtratio").val(),
                        directionangle: $("#edit-directionangle").val(),
                        earthalbedo: $("#edit-earthalbedo").val(),
                        condensingrate: $("#edit-condensingrate").val(),
                        worktemp: $("#edit-worktemp").val(),
                        pannelarea: $("#edit-pannelarea").val(),
                        tempratio: $("#edit-tempratio").val(),
                        ageingratio: $("#edit-ageingratio").val(),
                        unmatchratio: $("#edit-unmatchratio").val(),
                        dustratio: $("#edit-dustratio").val(),
                        dccratio: $("#edit-dccratio").val(),
                        alt: $("#edit-alt").val(),
                        fixtime: new Date($("#edit-fixtime").val().replace(/-/g,"/")),
                        remark: $("#edit-remark").val(),
                    };
                    layer.close(index);
                    $.ajax({
                        url : "../sfMGUManage/update",
                        type : "POST",
                        contentType : "application/json;charset=utf-8",
                        dataType : 'json',
                        data : JSON.stringify(p),//转换成字符串。后台使用了RequestBody注解
                        success : function(data) {
                            if (data === true) {
                                me.loadData();
                                layer.msg("修改成功！", {icon: 1});
                            } else {
                                layer.msg("修改失败！", {icon: 2});
                            }
                        },
                        error :function(){
                            alert("添加失败");
                        }
                    });
                }
            });
        } else if (len > 1){
            layer.msg("只能选择一条信息！", {icon: 2});
        } else if (len === 0) {
            layer.msg("请选择要修改的信息！", {icon: 0});
        }
    }
};

function addListeners (tableObj) {
    $('#btn-add').off('click');
    $('#btn-delete').off('click');
    $('#btn-edit').off('click');
    $('#btn-add').on('click', function () {
        tableObj.save();
    });
    $('#btn-delete').on('click', function () {
        tableObj.delete();
    });
    $('#btn-edit').on('click', function () {
        tableObj.edit();
    });
}
